#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <assert.h>

#include "funzioni.c"

#include "carta.h"
#include "meraviglia.h"
#include "giocatore.h"
#include "partita.h"
#include "turno.h"

#include "azioni_mazzo.c"
#include "mazzo.c"

#include "carta.c"
#include "meraviglia.c"
#include "giocatore.c"
#include "partita.c"
#include "turno.c"


int main(int argc, char **argv){
	FILE* file;
	srand(time(NULL)); //srand(time(NULL)+(unsigned int)(*argv));
	
	partita *game = nuova_partita();
	int turno = 0;
//-- fase 1 --
	stampa_tutto(game, turno);					//CONTROLLO
	turno++;

	for(turno = 1; turno < 7; turno++){
	esegui_turno(game);
	if(turno == 6) svuota_mani(game);
	stampa_tutto(game, turno);					//CONTROLLO
	}
//-- interfase: guerra
	applica_guerre(game);

	stampa_separatore_ere(game->era);

//-- fase 2 --
	game->era++;
	inizializza_era2(game);
	
	for(turno = 1; turno < 7; turno++){
	esegui_turno(game);
	if(turno == 6) svuota_mani(game);
	stampa_tutto(game, turno);					//CONTROLLO
	}
	
//-- interfase: guerra
	applica_guerre(game);

	stampa_separatore_ere(game->era);

//-- fase 3 --
	game->era++;
	inizializza_era3(game);
	
	for(turno = 1; turno < 7; turno++){
	esegui_turno(game);
	if(turno == 6) svuota_mani(game);
	stampa_tutto(game, turno);					//CONTROLLO
	}
	
//-- interfase: guerra
	applica_guerre(game);
	
	stampa_separatore_ere(game->era);
		
//-- attivazione effetti finali
	for(turno = 0; turno < 7; turno++){
		attiva_azioni_finali(&game->giocatori[turno]);
	}

//-- calcolo punti e li stampo
	calcola_punti_finale(game);
	stampa_risultati(game->tabella_punti);
	file = fopen("punteggi.txt", "a");
	stampa_su_file_risultati(game->tabella_punti, file);
	fclose(file);
	
	dealloca_tutto(game);
	return 0;
}
